<!DOCTYPE html>
<p>There should be two blue squares below.</p>
<div style="position:relative; columns:2; column-fill:auto; height:120px; line-height:20px; orphans:1; widows:1;">
    <!-- line 1 --><br>
    <!-- line 2 --><br>
    <!-- line 3 --><br>
    <!-- line 4 --><br>
    <div id="floater" style="float:left; width:40px; height:80px; background:blue;">
        <div id="child" style="break-inside:avoid; height:80px;"></div>
    </div>
    <!-- line 5 --><br>
    <!-- line 6 --><br>
    <!-- line 7 --><br>
    <!-- line 8 --><br>
</div>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<script>
test(() => {
    var floater = document.getElementById("floater");
    var child = document.getElementById("child");
    document.body.offsetTop;

    assert_equals(floater.offsetTop, 0);
    // The float contains a tall unbreakable block. Its natural position would
    // be to start flush with line 5, because that's where it lies in the DOM,
    // but since we only have 40px column space left at that point, and it
    // contains something unbreakable that's 80px tall, it needs to be pushed to
    // the next column, and therefore end up next to line 7. Now, if we remove
    // the unbreakable block, it should jump back to line 5, though.
    child.style.display = "none";
    assert_equals(floater.offsetTop, 80);
}, "Remove a tall unbreakable block inside a float.");
</script>
